blob: e9dbca7d87bade4126cd45477b69478894518168 [file] [log] [blame]
Junio C Hamanoab008762005-12-28 02:33:001git-describe(1)
2===============
3
4NAME
5----
Junio C Hamano01078922006-03-10 00:31:476git-describe - Show the most recent tag that is reachable from a commit
Junio C Hamanoab008762005-12-28 02:33:007
8
9SYNOPSIS
10--------
Junio C Hamanofce7c7e2008-07-02 03:06:3811'git describe' [--all] [--tags] [--contains] [--abbrev=<n>] <committish>...
Junio C Hamanoab008762005-12-28 02:33:0012
13DESCRIPTION
14-----------
15The command finds the most recent tag that is reachable from a
Junio C Hamano2fbcd212008-05-14 22:26:0716commit. If the tag points to the commit, then only the tag is
17shown. Otherwise, it suffixes the tag name with the number of
18additional commits on top of the tagged object and the
19abbreviated object name of the most recent commit.
Junio C Hamanoab008762005-12-28 02:33:0020
Junio C Hamano7d06a8a2008-10-20 05:42:3321By default (without --all or --tags) `git describe` only shows
22annotated tags. For more information about creating annotated tags
23see the -a and -s options to linkgit:git-tag[1].
Junio C Hamanoab008762005-12-28 02:33:0024
25OPTIONS
26-------
Junio C Hamano9e395072008-07-31 22:11:2127<committish>...::
28Committish object names to describe.
Junio C Hamanoab008762005-12-28 02:33:0029
30--all::
31Instead of using only the annotated tags, use any ref
Junio C Hamano7d06a8a2008-10-20 05:42:3332found in `.git/refs/`. This option enables matching
33any known branch, remote branch, or lightweight tag.
Junio C Hamanoab008762005-12-28 02:33:0034
35--tags::
36Instead of using only the annotated tags, use any tag
Junio C Hamano7d06a8a2008-10-20 05:42:3337found in `.git/refs/tags`. This option enables matching
38a lightweight (non-annotated) tag.
Junio C Hamanoab008762005-12-28 02:33:0039
Junio C Hamano5e284b42007-05-22 07:23:3740--contains::
41Instead of finding the tag that predates the commit, find
42the tag that comes after the commit, and thus contains it.
43Automatically implies --tags.
44
Junio C Hamanoab008762005-12-28 02:33:0045--abbrev=<n>::
Junio C Hamano22bcc112009-01-24 08:05:1846Instead of using the default 7 hexadecimal digits as the
Junio C Hamanoc21ab052009-10-31 04:03:5547abbreviated object name, use <n> digits, or as many digits
48as needed to form a unique object name. An <n> of 0
49will suppress long format, only showing the closest tag.
Junio C Hamanoab008762005-12-28 02:33:0050
Junio C Hamanoedd2b0a2007-01-15 06:12:4551--candidates=<n>::
52Instead of considering only the 10 most recent tags as
53candidates to describe the input committish consider
54up to <n> candidates. Increasing <n> above 10 will take
55slightly longer but may produce a more accurate result.
Junio C Hamano24bc09a2008-02-28 00:27:4456An <n> of 0 will cause only exact matches to be output.
57
58--exact-match::
59Only output exact matches (a tag directly references the
60supplied commit). This is a synonym for --candidates=0.
Junio C Hamanoedd2b0a2007-01-15 06:12:4561
62--debug::
63Verbosely display information about the searching strategy
64being employed to standard error. The tag name will still
65be printed to standard out.
Junio C Hamanoab008762005-12-28 02:33:0066
Junio C Hamano4f1d8c42008-03-03 02:01:1667--long::
68Always output the long format (the tag, the number of commits
69and the abbreviated commit name) even when it matches a tag.
70This is useful when you want to see parts of the commit object name
71in "describe" output, even when the commit in question happens to be
72a tagged version. Instead of just emitting the tag name, it will
Junio C Hamanoc21ab052009-10-31 04:03:5573describe such a commit as v1.2-0-gdeadbee (0th commit since tag v1.2
74that points at object deadbee....).
Junio C Hamano4f1d8c42008-03-03 02:01:1675
Junio C Hamano9c334152008-02-12 03:18:5276--match <pattern>::
77Only consider tags matching the given pattern (can be used to avoid
78leaking private tags made from the repository).
79
Junio C Hamanoeb415992008-06-08 22:49:4780--always::
81Show uniquely abbreviated commit object as fallback.
82
Junio C Hamanoab008762005-12-28 02:33:0083EXAMPLES
84--------
85
86With something like git.git current tree, I get:
87
Junio C Hamanofce7c7e2008-07-02 03:06:3888[torvalds@g5 git]$ git describe parent
Junio C Hamanoa890c4f2007-01-28 10:29:2189v1.0.4-14-g2414721
Junio C Hamanoab008762005-12-28 02:33:0090
91i.e. the current head of my "parent" branch is based on v1.0.4,
Junio C Hamano6efe3022009-01-13 16:47:5692but since it has a few commits on top of that,
Junio C Hamanoa890c4f2007-01-28 10:29:2193describe has added the number of additional commits ("14") and
94an abbreviated object name for the commit itself ("2414721")
95at the end.
96
97The number of additional commits is the number
98of commits which would be displayed by "git log v1.0.4..parent".
99The hash suffix is "-g" + 7-char abbreviation for the tip commit
100of parent (which was `2414721b194453f058079d897d13c4e377f92dc6`).
Junio C Hamanoab008762005-12-28 02:33:00101
Junio C Hamanoba4b9282008-07-06 05:20:31102Doing a 'git-describe' on a tag-name will just show the tag name:
Junio C Hamanoab008762005-12-28 02:33:00103
Junio C Hamanofce7c7e2008-07-02 03:06:38104[torvalds@g5 git]$ git describe v1.0.4
Junio C Hamanoab008762005-12-28 02:33:00105v1.0.4
106
107With --all, the command can use branch heads as references, so
108the output shows the reference path as well:
109
110[torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2
Junio C Hamanoa890c4f2007-01-28 10:29:21111tags/v1.0.0-21-g975b
Junio C Hamanoab008762005-12-28 02:33:00112
Junio C Hamanoc21ab052009-10-31 04:03:55113[torvalds@g5 git]$ git describe --all --abbrev=4 HEAD^
Junio C Hamanoa890c4f2007-01-28 10:29:21114heads/lt/describe-7-g975b
115
116With --abbrev set to 0, the command can be used to find the
117closest tagname without any suffix:
118
119[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2
120tags/v1.0.0
Junio C Hamanoab008762005-12-28 02:33:00121
Junio C Hamanoc21ab052009-10-31 04:03:55122Note that the suffix you get if you type these commands today may be
123longer than what Linus saw above when he ran this command, as your
124git repository may have new commits whose object names begin with
125975b that did not exist back then, and "-g975b" suffix alone may not
126be sufficient to disambiguate these commits.
127
128
Junio C Hamanoedd2b0a2007-01-15 06:12:45129SEARCH STRATEGY
130---------------
131
Junio C Hamanoba4b9282008-07-06 05:20:31132For each committish supplied, 'git-describe' will first look for
Junio C Hamanoedd2b0a2007-01-15 06:12:45133a tag which tags exactly that commit. Annotated tags will always
134be preferred over lightweight tags, and tags with newer dates will
135always be preferred over tags with older dates. If an exact match
136is found, its name will be output and searching will stop.
137
Junio C Hamanoba4b9282008-07-06 05:20:31138If an exact match was not found, 'git-describe' will walk back
Junio C Hamanoedd2b0a2007-01-15 06:12:45139through the commit history to locate an ancestor commit which
140has been tagged. The ancestor's tag will be output along with an
141abbreviation of the input committish's SHA1.
142
143If multiple tags were found during the walk then the tag which
144has the fewest commits different from the input committish will be
145selected and output. Here fewest commits different is defined as
Junio C Hamanofce7c7e2008-07-02 03:06:38146the number of commits which would be shown by `git log tag..input`
Junio C Hamanoedd2b0a2007-01-15 06:12:45147will be the smallest number of commits possible.
148
Junio C Hamanoab008762005-12-28 02:33:00149
150Author
151------
152Written by Linus Torvalds <torvalds@osdl.org>, but somewhat
Junio C Hamano0868a302008-07-22 09:20:44153butchered by Junio C Hamano <gitster@pobox.com>. Later significantly
Junio C Hamanoa890c4f2007-01-28 10:29:21154updated by Shawn Pearce <spearce@spearce.org>.
Junio C Hamanoab008762005-12-28 02:33:00155
156Documentation
157--------------
158Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.
159
160GIT
161---
Junio C Hamanof7c042d2008-06-06 22:50:53162Part of the linkgit:git[1] suite